package edu.upc.negocio;

import java.util.ArrayList;

import edu.upc.entidades.*;

public class AdmCartaFianza {
	
private ArrayList<CartaFianza> cartas;

	
	public AdmCartaFianza(){
        // Creacion de la coleccion de modulos
		cartas = new ArrayList<CartaFianza>();
		
    }
	
	public boolean registrarCarta(CartaFianza carta) {
	
		if (noExisteCarta(carta.getNum_carta())){
        	if(validardatosparagrabar(carta)==true){
        		cartas.add(carta);
        		return true;
        	}
        	return false;
            
        }
		
		return false;
    }
	
	public boolean asignarCarta(String carta) {
			
		if (!(noExisteCarta(carta) == true)){
        	if(validardatosparagrabar(buscarCarta(carta))==true){
        		if(validarAsignarTarea(buscarCarta(carta))==true){
        			if(actualizarAsigacion(buscarCarta(carta)) == true)return true;
        			return false;
        		}
        		return false;
        	}
        	return false;
            
        }
		
		return false;
    }
	
	private boolean validardatosparagrabar(CartaFianza nuevacarta) {
		
		if(nuevacarta.getNum_carta().equals("") || nuevacarta.getProveedor().equals("")) return false;
		
		return true;
	}
	
	private boolean validarAsignarTarea(CartaFianza nuevacarta) {
		
		if(nuevacarta.getResponsable().equals("") || nuevacarta.getNum_carta().equals("") || nuevacarta.getProveedor().equals("") || nuevacarta.getNum_contrato().equals("") ) return false;
		
		if(nuevacarta.getBanco_emisor().equals("") || nuevacarta.getTipo_carta().equals("") || nuevacarta.getImporte() == 0 || nuevacarta.getFec_vencimento().equals("")) return false;
		
		return true;
	}

	public boolean actualizarCarta(CartaFianza carta) {
		if (buscarCarta(carta.getNum_carta())!= null) {
			if(buscarCarta(carta.getNum_carta()).getAsignada().equals("si")) return false;
			else{
			eliminarCarta(carta.getNum_carta());	
            cartas.add(carta);
            return true;}
        }
        
        return false;
    }
	
	public boolean actualizarAsigacion(CartaFianza carta) {
		if (buscarCarta(carta.getNum_carta())!= null) {
			if(buscarCarta(carta.getNum_carta()).getAsignada().equals("si")) return false;
			eliminarCarta(carta.getNum_carta());
			carta.setAsignada("si");
            cartas.add(carta);
            return true;
        }
        
        return false;
    }

    public CartaFianza buscarCarta(String id) {
        for( CartaFianza mod  : cartas)
            if(mod.getNum_carta().equals(id)){
            	return mod;
            }
        return null;
    }

    public int getTotalCarta() {
    	for( CartaFianza mod  : cartas){
            }
        return cartas.size();
    }

    private boolean noExisteCarta(String id_mod) {
        return buscarCarta(id_mod) == null;
    }

    public void eliminarCarta(String id_mod) {
    	CartaFianza mod = buscarCarta(id_mod);
        if (mod != null)
            cartas.remove(mod);
        else
        	System.out.println("No existe");
    }

	public ArrayList<CartaFianza> getCartas() {
		return cartas;
	}
    

}
